IP is a common data standard used by computer systems to exchange data over a network. Using the IP standard, data is transferred in packets from a source computer system to a destination computer system. Data can be transferred directly between the two computers, or indirectly, being passed through other computer systems before arriving at the destination computer system. IP version 4 (IPv4) and IP version 6 (IPv6) are two popular versions of the IP communication standard. IPv4 and IPv6 differ in their terminology and implementations, but the two standards share many equivalent features. The IP tunnelling technique disclosed in this description applies to IPv4 and IPv6, and accordingly terminology from both the IPv4 and IPv6 standards is used where appropriate. The Internet protocol security standard (IPsec) is an IP standard that deals with authentication and confidentiality features for IP data, using cryptographic processing. Processing systems for IP packets preferably support packet encapsulation (ie., tunnelling) as well as IPsec processing.
IP packets contain a header, followed by a payload. In IPv4, “options”, if present, appear as part of the IP header. In IPv6, the IP header can be followed by IP extension headers. IPv4 options and IPv6 IP extension headers can, for the purposes of this description, be considered to be functionally equivalent. p In some circumstances, an IP packet can be transported as the payload of an encapsulating IP packet. The encapsulating packet is called a “tunnel packet”. The forwarding path between the source and destination of the tunnel packet is called a tunnel. The technique of encapsulating a packet and sending it from a source to a destination is called tunneling. Once tunneled (formed), a tunnel packet is provided with a new IP header and new IP extension headers, that are respectively referred to as an outer IP header and outer IP extension headers. The header and extension headers of the encapsulated packet are referred to as the inner IP header and the inner IP extension headers. The outer IP header may be constructed by copying some fields from the inner IP header, however, the construction of the outer IP extension headers is not necessarily directly related to the inner IP extension headers.
Typical IP processing systems are implemented in software. As IP data rates increase, this software implementation approach is sometimes too slow for some applications. If the processing methods typically used in software systems are directly mapped to a hardware implementation, then the speed of the resultant hardware system is typically greater than the corresponding software systems, however, such hardware implementations would be complex and inflexible.